package learn.up.generic;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

/*
 * 泛型类
 * 泛型类定义的泛型，在整个类中都有效。
  当泛型类对象明确要操作的具体类型之后，这个泛型类对象对应的所有
  非静态方法的泛型参数全部固定为泛型类对象已经明确的具体类型。
 */
public class GenericClass<T> {

	T t;
	
	public String getJson( T t){
		ObjectMapper om = new ObjectMapper();
		try {
			return om.writeValueAsString(t);
		} catch (JsonProcessingException e) {
			e.printStackTrace();
		}
		return null;
	}
	@Override
	public String toString() {
		return "GenericClass " + t;
	}
	public T getT() {
		return t;
	}
	public void setT(T t) {
		this.t = t;
	}
	void print(T t){
		System.out.println(t);
	}
	/*
	 * 当方法上有和类上同名泛型的时候，方法内部的泛型类型是方法上声明的泛型类型，
	 */
	public <E> void show(E t){
		System.out.println(t);
	}
}
